import os
import json
import shutil

'''
找出在shapes字段中不包含"label": "box"的图片和对应的标注文件json，并将它们移动到文件夹B中，如果标注文件夹不存在，则移动到文件夹C中：

遍历文件夹A中的所有图片文件和对应的标注文件json。
读取每个json文件，检查是否在shapes字段中包含"label": "box"，如果不包含，则将该图片文件和对应的标注文件json移动到文件夹B或文件夹C中。
'''

# 文件夹A、B和C的路径
folder_a_path = "/home/champrin/Desktop/MV-CS016-10UC+DA1041860/给预备役/json_annotations (copy)"
folder_b_path = "/home/champrin/Desktop/MV-CS016-10UC+DA1041860/给预备役/json_annotations (copy)/without_box"
folder_c_path = "/home/champrin/Desktop/MV-CS016-10UC+DA1041860/给预备役/json_annotations (copy)/none_label"
os.makedirs(folder_b_path, exist_ok=True)
os.makedirs(folder_c_path, exist_ok=True)

# 保存os.walk(folder_a_path)的内容
files_to_process = []

for root, dirs, files in os.walk(folder_a_path):
    for file_name in files:
        if file_name.endswith(".jpg"):
            image_file_path = os.path.join(root, file_name)
            json_file_path = os.path.join(root, file_name.split(".")[0] + ".json")
            files_to_process.append((image_file_path, json_file_path))

# 遍历文件夹A中的图片文件和对应的标注文件
for image_file_path, json_file_path in files_to_process:
    if os.path.exists(json_file_path):
        with open(json_file_path, 'r') as json_file:
            json_data = json.load(json_file)

            # 检查shapes字段中是否包含"label": "box"
            if not any(shape.get("label") == "box" for shape in json_data["shapes"]):
                # 没有"label": "box"，将图片文件和标注文件移动到文件夹B或文件夹C
                dest_image_path = os.path.join(folder_b_path, os.path.basename(image_file_path))
                dest_json_path = os.path.join(folder_b_path, os.path.basename(json_file_path))
                shutil.move(image_file_path, dest_image_path)
                shutil.move(json_file_path, dest_json_path)
    else:
        shutil.move(image_file_path, folder_c_path)


print("处理完成。")